package com.wushuu.ce.http;


import org.xutils.common.util.LogUtil;
import org.xutils.http.HttpMethod;
import org.xutils.http.RequestParams;

import java.util.Map;

/**
 * ============================================================
 * <br/>
 * 作 者 :        xyb
 * <br/>
 * 版 本 :        1.0
 * <br/>
 * 创建日期 ：     2016-05-12 上午10:15
 * <br/>
 * 描 述 ：
 * <br/>
 * 修订历史 ：
 * <br/>
 * ============================================================
 **/
public abstract class BaseHttpHelper {

    protected RequestParams mRequestParams;

    /**
     * 绑定请求链接和参数,http请求的参数
     *
     * @param url       请求链接
     * @param paramMaps 请求参数
     * @param method 请求方法
     */
    public void execute(String url, Map<String, Object> paramMaps, HttpMethod method) {
        mRequestParams = new RequestParams(url);

        /**
         * 当不使用jsonStub模拟的时候去掉下面三行代码
         */
        mRequestParams.setHeader("JsonStub-User-Key", "0a0d2a98-1798-4349-9f3a-c2a6dc5b117c");
        mRequestParams.setHeader("JsonStub-Project-Key", "6646e5dc-539a-4676-8028-bb5544a1e9b5");
        mRequestParams.setHeader("Content-Type", "application/json;charset=UTF-8");

        /**
         * get 和post方法添加参数的不同
         */

        if (method.equals(HttpMethod.GET)) {
            for (Map.Entry<String, Object> entry : paramMaps.entrySet()) {
                mRequestParams.addQueryStringParameter(entry.getKey(), entry.getValue().toString());
            }
            //发送 get 请求
            get();

        } else if (method.equals(HttpMethod.POST)) {
            for (Map.Entry<String, Object> entry : paramMaps.entrySet()) {
                mRequestParams.addParameter(entry.getKey(), entry.getValue());
            }
            //发送 post 请求
            post();
        } else {
            LogUtil.d("----request method error-------");
        }

    }


    /**
     * execute重载 针对无参数的时候
     * @param url 请求链接
     * @param method 请求方法
     */
    public void execute(String url, HttpMethod method) {
        execute(url,null,method);
    }

    /**
     * post请求
     */
    public abstract void post();

    /**
     * get请求
     */
    public abstract void get();
}
